[Java] 靜態變數(static variable)分析 您所在的位置:网站首页 java static variable [Java] 靜態變數(static variable)分析

[Java] 靜態變數(static variable)分析

#[Java] 靜態變數(static variable)分析| 来源: 网络整理| 查看: 265

閱讀時間: 5分鐘

(1) 靜態變數是屬於class,但不是物件(Object)。 所以要使用靜態變數時,在static method內可以不需要創建任何物件(Object)就可以使用。

例子1:

public class StaticTest { static int a = 1; int b = 2; public static void main(String[] args) { System.out.println("static variable a= " + StaticTest.a); StaticTest obj = new StaticTest(); //創建一個class物件(Object) System.out.println("instance variable b= " + obj.b); } }

如果要在static method內調用非靜態變數,就必須創建一個class物件(Object),然後透過物件來調用非靜態變數。

(2) 靜態變數與非靜態變數的差別在於它們對記憶體分配,每個靜態變數只有佔用一個記憶體, 假如你有不同物件都使用同一個靜態變數,它們將會只得到同一個值,而其中一個物件修改靜態變數的值,也會影響到其他物件的靜態變數的值。

例子2:

public class StaticTest2 { static int a; int b; public static void main(String[] args) { StaticTest2 obj1 = new StaticTest2(); obj1.a = 100; obj1.b = 101; System.out.println("obj1.a=" + obj1.a + ", obj1.b=" + obj1.b); StaticTest2 obj2 = new StaticTest2(); System.out.println("obj2.a=" + obj2.a + ", obj2.b=" + obj2.b); } }

靜態變數a的值,通過 obj1或者obj2都只會指向同一個記憶體,換句話說,通過 obj1修改靜態變數a會影響到obj2.a的值。 通過 obj2修改靜態變數a會影響到obj1.a的值。

例項變數(instance variable) b,通過 obj1或者obj2都不會指向同一個記憶體,因為它是依賴物件而創建新的記憶體,所以obj1.b和obj2.b不是同一樣東西,它們是分別獨立存在。 通過 obj1修改靜態變數b,是不會影響到obj2.b的值。 通過 obj2修改靜態變數b,也不會影響到obj1.b的值。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有